fmt 包教程

概述

fmt 包是 Go 语言标准库中非常重要的一个包,主要用于格式化输入和输出。它提供了多种函数来处理字符串、数字、布尔值等的格式化输出,以及从标准输入读取数据。本教程将详细介绍 fmt 包的功能和使用方法,并通过代码示例和实践练习帮助你掌握这些知识。

1. 基本输出函数

1.1 Print

Print 函数用于将参数打印到标准输出。它不会在输出后添加换行符。

package main

import "fmt"

func main() {
    fmt.Print("Hello, ")
    fmt.Print("World!")
}

输出:

Hello, World!

1.2 Println

Println 函数与 Print 类似,但它会在输出后自动添加换行符。

package main

import "fmt"

func main() {
    fmt.Println("Hello, ")
    fmt.Println("World!")
}

输出:

Hello, 
World!

1.3 Printf

Printf 函数用于格式化输出。它支持多种格式化动词(verbs),如 %s 表示字符串,%d 表示整数,%f 表示浮点数等。

package main

import "fmt"

func main() {
    name := "Alice"
    age := 30
    fmt.Printf("Name: %s, Age: %d\n", name, age)
}

输出:

Name: Alice, Age: 30

2. 格式化动词

fmt 包支持多种格式化动词,以下是一些常用的动词:

  • %v:默认格式
  • %T:类型
  • %t:布尔值
  • %d:十进制整数
  • %b:二进制整数
  • %f:浮点数
  • %s:字符串
  • %q:带引号的字符串

示例

package main

import "fmt"

func main() {
    var i int = 42
    var f float64 = 3.14
    var b bool = true
    var s string = "Hello"

    fmt.Printf("i: %v (%T)\n", i, i)
    fmt.Printf("f: %v (%T)\n", f, f)
    fmt.Printf("b: %v (%T)\n", b, b)
    fmt.Printf("s: %v (%T)\n", s, s)
}

输出:

i: 42 (int)
f: 3.14 (float64)
b: true (bool)
s: Hello (string)

3. 输入函数

3.1 Scan

Scan 函数用于从标准输入读取数据,并将读取的值存储到变量中。

package main

import "fmt"

func main() {
    var name string
    var age int

    fmt.Print("Enter your name: ")
    fmt.Scan(&name)

    fmt.Print("Enter your age: ")
    fmt.Scan(&age)

    fmt.Printf("Name: %s, Age: %d\n", name, age)
}

输入:

Enter your name: Alice
Enter your age: 30

输出:

Name: Alice, Age: 30

3.2 Scanln

Scanln 函数与 Scan 类似,但它会在读取到换行符时停止。

package main

import "fmt"

func main() {
    var name string
    var age int

    fmt.Print("Enter your name and age: ")
    fmt.Scanln(&name, &age)

    fmt.Printf("Name: %s, Age: %d\n", name, age)
}

输入:

Enter your name and age: Alice 30

输出:

Name: Alice, Age: 30

3.3 Scanf

Scanf 函数用于格式化输入,类似于 Printf。

package main

import "fmt"

func main() {
    var name string
    var age int

    fmt.Print("Enter your name and age: ")
    fmt.Scanf("%s %d", &name, &age)

    fmt.Printf("Name: %s, Age: %d\n", name, age)
}

输入:

Enter your name and age: Alice 30

输出:

Name: Alice, Age: 30

4. 实践练习

练习1:格式化输出

编写一个程序,要求用户输入姓名和年龄,然后使用 Printf 函数格式化输出这些信息。

练习2:读取多个值

编写一个程序,要求用户输入多个整数,然后使用 Scan 函数读取这些整数并计算它们的和。

练习3:格式化输入

编写一个程序,要求用户输入一个浮点数和一个字符串,然后使用 Scanf 函数读取这些值并格式化输出。

5. 总结

fmt 包是 Go 语言中用于格式化输入和输出的重要工具。通过本教程,你已经学习了如何使用 fmt 包中的基本输出和输入函数,以及如何使用格式化动词进行格式化输出。希望这些知识能够帮助你在实际编程中更好地处理输入和输出。

下一步

接下来,你可以继续学习 Go 语言的其他标准库包,如 io、os、net/http 等,或者深入了解 Go 语言的并发编程、错误处理等高级主题。